// $Id: creepblock1.hpp 14 2008-02-23 15:12:07Z msaushkin $
/**
* @file
* * Описание интерфейса пространства имён creepblock1, используемого для расчёта неупругих деформаций по 
*  одноосной  модели

* @author Саушкин М.Н.
*/

/**
* Структура, описывающая основные параметры математической модели теории ползучести.
* Структура используется  в пространстве имён creepblock1.
*/
struct creep_params{
      char*  description;  //!< описание материала
      double sigmazv;     //!< параметр \f$\sigma_*\f$, кг/мм\f$^2\f$.
      int    k;           //!< параметр \f$k\f$; принимет значения 0, 1, 2.
      double lambdak1;    //!< параметр \f$\lamba_1\f$, ч\f$^{-1}\f$.
      double lambdak2;    //!< параметр \f$\lamba_2\f$, ч\f$^{-1}\f$.
      double ak1;         //!< параметр \f$a_1\f$.
      double ak2;         //!< параметр \f$a_2\f$.
      double bk1;         //!< параметр \f$b_1\f$.
      double bk2;         //!< параметр \f$b_2\f$.
      double c;           //!< параметр \f$c\f$.
      double n2;          //!< параметр \f$n_2\f$.
      double m1;          //!< параметр \f$m_1\f$.
      double alpha1;      //!< параметр \f$\alpha_1\f$.
      double m3;          //!< параметр \f$m_3\f$.
      double alphaA;      //!< параметр \f$\alpha_A\f$.
      double mA;          //!< параметр \f$m_A\f$.
      double mu1;         //!< параметр \f$\mu_1\f$.
      double mu2;         //!< параметр \f$\mu_2\f$.
};

/**
* Структура, описывающая основные параметры математической модели теории пластичности.
* Структура используется  в пространстве имён creepblock1.
*/
/*struct plast_params{
      char*  description;  //!< описание материала
      double sigmapr;      //!< параметр \f$\sigma_*\f$, кг/мм\f$^2\f$.
      double a;
      double n1;
      double gamma1;
      double Azvp;
      double m2;
};
*/

const creep_params creep_EI698T700 ={"ЭИ 698 при T=700°C (ползучесть)", 50., 1, 0.2, 0.0, 
      2.96e-4, 0.0, 4.44e-4, 0.0, 2.51e-5, 2.9, 10.96, 917.2098552, -2.027, 1.242, 0.0, 0.38, 0.42};

/**
* 
* 
*/
namespace creepblock1{

   /** Инициализация параметров модели.
   */
   int constinit(const void * cr);

   /** Вывод информации о параметрах материала
   */
   void paraminfo();

   /** Вычисление приращения dW от текущих параметров.
   */
   double calcdW (double S,  //!< \f$\sigma(t)\f$ - номинальное напряжение (кг/мм\f$^2\f$).
                  double dT, //!< \f$\Delta t\f$  - приращение времени (ч).
                  double Om  //!< \f$\omega(t)\f$ - текущее значение параметра повреждённости.
                 );

   /** Вычисление приращения dUk от текущих параметров.
   */
   double calcdUk(int k,     //!< номер слагаемого в общей сумме; может принимать значения 1 и 2.
                  double S,  //!< \f$\sigma(t)\f$ - номинальное напряжение (кг/мм\f$^2\f$).
                  double dT, //!< \f$\Delta t\f$  - приращение времени (ч).
                  double Uk, //!< текущее значение деформации $u_k$, соответствующей номеру \f$k\f$.
                  double Om  //!< \f$\omega(t)\f$ - текущее значение параметра повреждённости.
                 ); 

   /** Вычисление приращения dVk от текущих параметров.
   */
   double calcdVk(int k,     //!< номер слагаемого в общей сумме; может принимать значения 1 и 2.
                  double S,  //!< \f$\sigma(t)\f$ - номинальное напряжение (кг/мм\f$^2\f$).
                  double dT, //!< \f$\Delta t\f$  - приращение времени (ч).
                  double Vk, //!< текущее значение деформации $v_k$, соответствующей номеру \f$k\f$.
                  double Om  //!< \f$\omega(t)\f$ - текущее значение параметра повреждённости.
                 ); 

   /** Вычисление приращения параметра повреждённости от текущих параметров.
   */
   double calcdOm(double S,  //!< \f$\sigma(t)\f$ - номинальное напряжение (кг/мм\f$^2\f$).
                  double dP, //!< приращение полной деформации ползучести на текущем шаге.
                  double Om  //!< \f$\omega(t)\f$ - текущее значение параметра повреждённости.
                );

   /** Вычисление приращения параметра разрушения от текущих параметров.
   */
   double calcdCr(double S,  //!< \f$\sigma(t)\f$ - номинальное напряжение (кг/мм\f$^2\f$).
                  double dP, //!< приращение полной деформации ползучести на текущем шаге.
                  double Om  //!< \f$\omega(t)\f$ - текущее значение параметра повреждённости.
                );

   /** Возвращает модуль mu1
   */
   double getmu1();

   /** Возвращает модуль mu2
   */
   double getmu2();

   /** Возвращает описание материала
   */
   char*  getdescription();

   /** Возвращает alphaA
   */
   double getalphaA();

   /** Возвращает alphaA
   */
   double getmA();

   /** Возвращает alphaA
   */
   double getalpha1();

   /** Возвращает m3
   */
   double getm3();

   /** Возвращает c
   */
   double getc();

   /** Возвращает m1
   */
   double getm1();

   /** Возвращает sigmazv
   */
   double getsigmazv();

   /** Возвращает lambdak1
   */
   double getlambdak1();

   /** Возвращает lambdak2
   */
   double getlambdak2();

   /** Возвращает ak1
   */
   double getak1();

   /** Возвращает ak2
   */
   double getak2();

   /** Возвращает n2
   */
   double getn2();

   /** Возвращает k
   */
   double getk();
};
